//package com.md.api.controller;
//import java.math.BigDecimal;
//import java.text.SimpleDateFormat;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//
//import com.md.api.common.utils.DateUtils;
//import com.md.api.common.utils.IpUtil;
//import com.md.api.entity.HttpResult;
//import org.apache.commons.io.IOUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
//import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
//import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
//import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
//import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
//import com.github.binarywang.wxpay.constant.WxPayConstants;
//import com.github.binarywang.wxpay.exception.WxPayException;
//import com.github.binarywang.wxpay.service.WxPayService;
//
//import io.renren.common.utils.DateUtils;
//import io.renren.common.utils.IPUtils;
//import io.renren.common.utils.PageUtils;
//import io.renren.common.utils.R;
//import io.renren.modules.soft.entity.AuthorizationEntity;
//import io.renren.modules.soft.entity.HospitalEntity;
//import io.renren.modules.soft.entity.OrderEntity;
//import io.renren.modules.soft.entity.PayFlowEntity;
//import io.renren.modules.soft.entity.PurchaseRecordEntity;
//import io.renren.modules.soft.entity.RefundRecordEntity;
//import io.renren.modules.soft.service.AuthorizationService;
//import io.renren.modules.soft.service.BedBaseService;
//import io.renren.modules.soft.service.DeviceService;
//import io.renren.modules.soft.service.HospitalService;
//import io.renren.modules.soft.service.OrderService;
//import io.renren.modules.soft.service.PayFlowService;
//import io.renren.modules.soft.service.PurchaseRecordService;
//import io.renren.modules.soft.service.RefundRecordService;
//import io.renren.modules.soft.service.StatementService;
//import io.renren.modules.soft.service.ThirdUserService;
//import io.renren.modules.soft.service.UserAuthorizationService;
//import io.renren.modules.soft.service.UserService;
//import lombok.extern.slf4j.Slf4j;
//
///**
// * @ClassName: WxUserVedioController
// * @Description:
// * @Author 夏威夷8080
// * @DateTime 2019年4月6日 上午11:54:08
// */
//@RestController
//@RequestMapping("/wx")
//@Slf4j
//public class WxPayController {
//	@Value("${wx.pay.rechargeNotifyUrl}")
//	private String rechargeNotifyUrl;
//    @Value("${wx.pay.drinkingNotifyUrl}")
//    private String drinkingNotifyUrl;
//    @Value("${wx.pay.shoppingNotifyUrl}")
//    private String shoppingNotifyUrl;
//	@Autowired
//	private WxPayService wxService;
//	@Autowired
//	private HospitalService hospitalService;
//	@Autowired
//	private PayFlowService payFlowService;
//	@Autowired
//	private OrderService orderService;
//
//	/**
//	 * @Title: createOrder
//	 * @Description:
//	 * @DateTime 2024年10月6日 下午12:12:11
//	 * @param
//	 * @return
//	 */
//	@PostMapping("/user/createOrder")
//	public HttpResult createOrder(HttpServletRequest request, @RequestBody Map<String,String> map)  throws WxPayException{
//		String bed_id = map.get("bedId");
//		log.info("参数的bed_id：{}", bed_id);
//		if (StringUtils.isAnyBlank(bed_id)) {
//			return HttpResult.fail("参数不能为null");
//		}
//		Long bedId = Long.valueOf(bed_id).longValue();
//		//根据bedId 查找所属医院的价格
//		HospitalEntity hospitalEntity = hospitalService.hospitalByBedId(bed_id.trim());
//		BigDecimal money = hospitalEntity.getCharge();
//
//		HttpSession session = request.getSession();
//		String mobile = (String) session.getAttribute("userphone");
//		String userId = (String) session.getAttribute("userId");
//		// TODO 插入订单记录
//		// TODO 记录用户的购买记录
//		// TODO 调用统一生成订单接口
//		WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
//		orderRequest.setSignType(WxPayConstants.SignType.MD5);
//		orderRequest.setBody("短信主体");
//		orderRequest.setOutTradeNo(order_No); //自己生成order_No
//		orderRequest.setTradeType(WxPayConstants.TradeType.JSAPI);
////        orderRequest.setTotalFee(BaseWxPayRequest.yuanToFen(yuanMoney));//直接分
//		orderRequest.setTotalFee(money.intValue());//直接分
//		orderRequest.setOpenid(userEntity.getOpenid()); // 获取微信支付用户的openId
//		orderRequest.setSpbillCreateIp(IpUtil.getRealIp(request));
//		Date now = new Date();
//		Date afterDate = DateUtils.add(now, Calendar.MINUTE, 10);//10分钟后
//		orderRequest.setTimeStart(DateUtils.format(now, DateUtils.yyyyMMddHHmmssFormat));
//		orderRequest.setTimeExpire(DateUtils.format(afterDate, DateUtils.yyyyMMddHHmmssFormat));
//		orderRequest.setNotifyUrl(notifyUrl);
//		Object order = wxService.createOrder(orderRequest);
//
//		return new HttpResult(order);
//	}
//
//	@ResponseBody
//	@PostMapping("/notify")
//	public String payNotify(HttpServletRequest request, HttpServletResponse response) {
//		try {
//        /*HttpSession session = request.getSession();
//        String mobile = (String) session.getAttribute("userphone");
//        if (StringUtils.isBlank(mobile)) {
//            return R.error(401, "session获取不到授权手机号！");
//        }
//          //获取用户手机号,根据用户手机号获取用户ID
//          AuthorizationEntity user = authorizationService.getOneByMobile(mobile);*/
//			String xmlResult = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding());
//			WxPayOrderNotifyResult notifyResult = wxService.parseOrderNotifyResult(xmlResult);
//			// 结果正确 outTradeNo
//			String orderId = notifyResult.getOutTradeNo();
//			String tradeNo = notifyResult.getTransactionId();
//			String totalFee = BaseWxPayResult.fenToYuan(notifyResult.getTotalFee());
//			if("SUCCESS".equals(notifyResult.getResultCode())) {
//				PayFlowEntity entity = new PayFlowEntity();
//				entity.setPayFee(BigDecimal.valueOf(notifyResult.getCashFee()));
//				entity.setPayFlowNo(orderId);
//				entity.setPayUserInfo(notifyResult.getOpenid());
//				entity.setThreeInNo(tradeNo);
//				payFlowService.save(entity);
//				OrderEntity order_entity = new OrderEntity();
//				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
//				order_entity.setCreateTime(new Date());
//				//更新订单信息
//				UpdateWrapper<OrderEntity> updateWrapper = new UpdateWrapper<>();
//				updateWrapper.set("order_status", "1");
//				updateWrapper.set("pay_id", notifyResult.getOpenid());
//				updateWrapper.set("pay_status", "1");
//				updateWrapper.set("pay_end_time", sdf.parse(notifyResult.getTimeEnd()));
//				updateWrapper.eq("order_no",notifyResult.getOutTradeNo());
//				orderService.update(updateWrapper);
//			}
//			//自己处理订单的业务逻辑，需要判断订单是否已经支付过，否则可能会重复调用
//			return WxPayNotifyResponse.success("成功");
//		} catch (Exception e) {
//			log.error("微信回调结果异常,异常原因{}", e.getMessage());
//			// WxPayNotifyResponse.fail(e.getMessage());
//
//			return WxPayNotifyResponse.success("code:"+9999+"微信回调结果异常,异常原因:"+e.getMessage());
//		}
//	}
//
//}